Luis Berrospi (líder)
Bryan Castillo
Luis Robledo
Jorge Collazos
Nincol Quiroz
| Semana | Actividad |
|---|---|
| 2 | Búsqueda de temas y Bases de datos |
| 2 (P0) | Realizar documento |
| 3 | Definir variables y datos |
| 4 | Realizar Introducción y objetivos |
| 5 (P1) | Clasificar y describir variables |
| 6 | Feedback P1 y descripción de datos |
| 7 | Identificar modelos de variable aleatoria |
| 8 (P2) | Hipótesis de relación entre variables |
| 9 | Feedback P2 |
| 10 | Realizar análisis de fiabilidad |
| 11 | Realizar pruebas de hipótesis o intervalos de confianza |
| 12 | Revisar relaciones entre variables (regresión) |
| 14 (P3) | Revisar Formato de entrega |
| 15 | Feedback P3 y revisar variables más importantes del proyecto |
| 16 (P4) | Reflexión sobre preguntas iniciales |
Son muchas las personas que se dedican profesionalmente a programar en todo el mundo. Sin embargo, las características de estas y el contexto en el que viven no son iguales. Tenemos la hipótesis de que el lugar de procedencia influye bastante en la situación tanto laboral como educativa de los programadores profesionales, por lo que decidimos realizar este análisis concentrándonos en lugares bastante distintos en desarrollo respecta, Latino América y Estados Unidos. Este estudio es importante porque lograremos observar si es que realmente existen estas diferencias. Además, si las hay, podremos identificar donde es que se encuentran para poder sugerir que es lo que una región está haciendo mejor o peor que la otra y se pueda encontrar una solución al verdadero problema.
En este estudio tenemos los siguientes objetivos:
Identificar la existencia de diferencias en el aspecto educativo y laboral entre programadores profresionales de América Latina y Estados Unidos.
Identificar el grado de las diferencias, así como cuales son las que presentan mayor brecha
Identificar las variables que no presentan diferencia alguna
Población objetivo: Personas que son o fueron programadores profesionales y son de América Latina o de Estados Unidos
Muestra: Programadores profesionales que usan constantemente el foro “Stack Overflow”
Base de Datos: La base de datos es el resultado de la Stack Overflow Developer Survey 2020, esta encuesta busca saber cómo es que aprenden, que herramientas usan y que y como se relacionan con el foro cualquier persona que sabe programar. La base de datos cuenta con cerca de 65000 observaciones totales y 61 variables, pero para este trabajo, delimitamos las observaciones según lo realmente necesitábamos.
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
── Column specification ────────────────────────────────────────────────────────
cols(
.default = col_character(),
Respondent = col_double(),
Age = col_double(),
CompTotal = col_double(),
ConvertedComp = col_double(),
WorkWeekHrs = col_double()
)
ℹ Use `spec()` for the full column specifications.
Cargamos la base de datos original y limpiamos algunos datos que tenían datos atípicos en en ciertas variables y que al analizarlos eran claramente errores o datos inválidos.
DFF <- select(df, MainBranch, Country,Gender,Age, YearsCode, YearsCodePro ,EdLevel,Employment, JobSat, OrgSize, WorkWeekHrs, NEWOvertime, NEWOnboardGood, JobSeek, NEWLearn, LanguageWorkedWith,PlatformWorkedWith)
DF_USA <- DFF[DFF$Country == "United States" & !is.na(DFF$Country) & DFF$MainBranch == "I am a developer by profession" & !is.na(DFF$MainBranch), ][3:17]
DF_LA <- cbind(region = as.character(countrycode(sourcevar = DFF$Country,
origin = "country.name",
destination = "region")), DFF)
DF_LA <- DF_LA[DF_LA$region == "Latin America & Caribbean" & !is.na(DF_LA$region) & DFF$MainBranch == "I am a developer by profession" & !is.na(DFF$MainBranch), ][, 4:18]
DF_MIX <- cbind(region = as.character(countrycode(sourcevar = DFF$Country,
origin = "country.name",
destination = "region")), DFF)
DF_MIX <- DF_MIX[((DF_MIX$region == "Latin America & Caribbean" & !is.na(DF_MIX$region)) | (DF_MIX$Country == "United States" & !is.na(DF_MIX$Country))) & DF_MIX$MainBranch == "I am a developer by profession" & !is.na(DF_MIX$MainBranch), ][, 3:18]
DF_MIX$Country[DF_MIX$Country != "United States"] <- "América Latina"
DF_MIX$Country[DF_MIX$Country == "United States"] <- "Estados Unidos"
colnames(DF_MIX)[which(names(DF_MIX) == "Country")] <- "Region"
DF_MIX
Luego de eso, creamos 2 data frames: DF_USA para guardar los datos de los programadores profesionales de Estados Unidos con 9452 observaciones y DF_LA para los datos de los de América Latina con 3032 observaciones. Amos data_frames cuentan con 15 variables que consideramos importantes para describir la situación educativa y laboral de los programadores profesionales. Además decidimos crear un tercer data frame, DF_MIX que es la unión de los dos anteriores con una variable más, “Región” para distinguirlos entre los que son de Estados Unidos y de América Latina, este fue creado con el objetivo de simplificar la realizacion de gráficos en el futuro. Datos Faltantes(%):
round(sum(is.na(DF_MIX))/(nrow(DF_MIX)*ncol(DF_MIX))*100, 2)
[1] 10.26
A continuación, se especifican las variables con las que trabajaremos y su tipo, así como la pregunta que se realizó originalmente en la encuesta
| Pregunta | Variable | Tipo de Variable |
|---|---|---|
| Which of the following describe you, if any? Please check all that apply. If you prefer not to answer, you may leave this question blank. | Género | Nominal |
| What is your age (in years)? If you prefer not to answer, you may leave this question blank. | Edad | Discreta |
| Including any education, how many years have you been coding in total? | Años codeando | Discreta |
| NOT including education, how many years have you coded professionally (as a part of your work)? | Años codeando profesionalmente | Discreta |
| Which of the following best describes the highest level of formal education that you’ve completed? | Grado educativo | Ordinal |
| Which of the following best describes your current employment status? | Tipo de empleo | Nominal |
| Which programming, scripting, and markup languages have you done extensive development work in over the past year, and which do you want to work in over the next year? (If you both worked with the language and want to continue to do so, please check both boxes in that row | Lenguajes con los que se trabajó | Nominal |
| How frequently do you learn a new language or framework? | Frecuencia de aprendizaje de un nuevo lenguaje/framework | Ordinal |
| Which platforms have you done extensive development work in over the past year, and which do you want to work in over the next year? (If you both worked with the platform and want to continue to do so, please check both boxes in that row.) | Plataformas con las que trabajó | Nominal |
| how often do you work overtime or beyond the formal time expectation of your job? | Frecuencia de horas extra | Ordinal |
| Do you think your company has a good onboarding process? (By onboarding, we mean the structured process of getting you settled in to your new role at a company) | Proceso de incorporación | Nominal |
| Which of the following best describes your current job-seeking status? | Situación de empleo | Nominal |
| How satisfied are you with your current job? (If you work multiple jobs, answer for the one you spend the most hours on.) | Satisfación laboral | Ordinal |
| Approximately how many people are employed by the company or organization you currently work for? | Cantidad de empleados | Ordinal |
| On average, how many hours per week do you work? Please enter a whole number in the box. | Horas de trabajo semanales | Continua |
temp = DF_USA$Gender[!is.na(DF_USA$Gender)]
gender_vec_USA <- vector()
gender_vec_LC <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
gender_vec_USA <- c(gender_vec_USA, sub_pal)
}
}
temp = DF_LA$Gender[!is.na(DF_LA$Gender)]
gender_vec <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
gender_vec_LC <- c(gender_vec_LC, sub_pal)
}
}
layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(10, 1))
par(mai=rep(0.5, 4))
temp = table(gender_vec_USA)
man <- round(temp[1]/length(gender_vec_USA)*100,2)
other <- round(temp[2]/length(gender_vec_USA)*100,2)
woman <- round(temp[3]/length(gender_vec_USA)*100,2)
pie(table(gender_vec_USA), main = "Estados Unidos", labels = c(paste(man, "%", sep = ""), paste(other, "%", sep = ""), paste(woman, "%", sep = "")), col = c("skyblue","orange","red"))
temp = table(gender_vec_LC)
man <- round(temp[1]/length(gender_vec_LC)*100,2)
other <- round(temp[2]/length(gender_vec_LC)*100,2)
woman <- round(temp[3]/length(gender_vec_LC)*100,2)
pie(table(gender_vec_LC), main = "América Latina", labels = c(paste(man, "%", sep = ""), paste(other, "%", sep = ""), paste(woman, "%", sep = "")), col = c("skyblue","orange","red"))
par(mai=c(0,0,0,0))
plot.new()
legend(x="center", ncol=3,legend=c("Hombre","Otros","Mujer"),
fill=c("skyblue","orange","red"))
En el gráfico podemos ver como si bien, la proporción de mujeres que se dedican en Estados Unidos es el doble que la proporción en América Latina, en ambas regiones la brecha de género es bastante grande lo que significa que la gran mayoría de los programadores profesionales son hombres.
boxplot(DF_MIX$Age~DF_MIX$Region, na.rm= T, xlab = "Edad", ylab = "Región", notch=TRUE, horizontal = TRUE, main='Edad de programadores por región')
abline(v=mean(DF_USA$Age, na.rm = TRUE), col = "red", lwd=2)
abline(v=mean(DF_LA$Age, na.rm = TRUE), col = "blue",lwd=2)
legend(60,1.7,legend=c("media EEUU", "Media Latam"),col=c("red", "blue"),lwd=2)
Podemos observar que las edades de los programadores profesionales están más concentradas en América Latina comparando los rangos intercuartílicos:
IQR(DF_LA$Age, na.rm = TRUE)
[1] 9
IQR(DF_USA$Age, na.rm = TRUE)
[1] 12
Además, la edad promedio de los programadores profesionales de América Latina es de 30.14 mientras que en Estados Unidos es de 34.33 .
round(mean(DF_LA$Age, na.rm = TRUE), 2)
[1] 30.16
round(mean(DF_USA$Age, na.rm = TRUE),2)
[1] 34.32
Junto con las medianas y la forma de las cajas podemos sugerir que en general, si bien, la diferencia de las medianas es estadísticamente significativa, no es mucha diferencia de edad entre los programadores profesionales de ambos países.
round(median(DF_LA$Age, na.rm = TRUE), 2)
[1] 29
round(median(DF_USA$Age, na.rm = TRUE),2)
[1] 32
boxplot(as.numeric(DF_MIX$YearsCode)~DF_MIX$Region, na.rm= TRUE, ylab = "Región", xlab = "Años", notch = TRUE, horizontal = TRUE, main='Años codenado por región')
abline(v=mean(as.numeric(DF_USA$YearsCode), na.rm = TRUE), col = "red")
abline(v=mean(as.numeric(DF_LA$YearsCode), na.rm = TRUE), col = "blue")
legend(25,1.7,legend=c("media EEUU", "media Latam"),col=c("red", "blue"),lwd=2)
En el diagrama de cajas y bigotes podemos ver como los programadores profesionales de Estados Unidos llevan más años programando en total en comparación con los de América Latina. Sin embargo, esta diferencia es pequeña.
También, es importante destacar la gran diferencia de 6 años que existe entre el tercer cuartil de ambas regiones. Esto implica que el 75% de los programadores profesionales de Estados Unidos cuentan a lo mucho con 22 años programando mientras que en América latina solo 16.
round(quantile(as.numeric(DF_LA$YearsCode), na.rm = TRUE), 2)
0% 25% 50% 75% 100%
1 7 10 16 50
round(quantile(as.numeric(DF_USA$YearsCode), na.rm = TRUE),2)
0% 25% 50% 75% 100%
1 8 14 22 50
Por último, si comparamos el coeficiente de variación, vemos que en ambas regiones la edad no varía mucho.
round(sd(as.numeric(DF_USA$YearsCode), na.rm = TRUE)/mean(as.numeric(DF_USA$YearsCode), na.rm = TRUE),2)
[1] 0.66
round(sd(as.numeric(DF_LA$YearsCode), na.rm = TRUE)/mean(as.numeric(DF_LA$YearsCode), na.rm = TRUE), 2)
[1] 0.63
boxplot(as.numeric(DF_MIX$YearsCodePro)~DF_MIX$Region, na.rm= TRUE, ylab = "Región", xlab = "Años", notch = TRUE, horizontal = TRUE, main='Años codeando profesionalmente por región')
abline(v=mean(as.numeric(DF_USA$YearsCodePro), na.rm = TRUE), col = "red")
abline(v=mean(as.numeric(DF_LA$YearsCodePro), na.rm = TRUE), col = "blue")
legend(25,1.7,legend=c("media EEUU", "media Latam"),col=c("red", "blue"),lwd=2)
En este diagrama de cajas y bigotes se observa que los programadores de Estados Unidos tienen más años programando profesionalmente en total en comparación con los programadores de América Latina.
Existe una diferencia de 4 años en el tercer cuartil de ambas regiones; es decir, el 75% de los programadores estadounidenses cuentan a los mucho con 15 años programando profesionalmente y los latinoamericanos con 11 años.
Programadores latinoamericanos
round(quantile(as.numeric(DF_LA$YearsCodePro), na.rm = TRUE), 2)
0% 25% 50% 75% 100%
1 3 6 11 50
Programadores estadounidenses
round(quantile(as.numeric(DF_USA$YearsCodePro), na.rm = TRUE),2)
0% 25% 50% 75% 100%
1 4 8 15 49
tableUSA <- table(DF_USA$EdLevel)
tableUSA <- prop.table(tableUSA)
tableUSA
Associate degree (A.A., A.S., etc.)
0.046563193
Bachelor’s degree (B.A., B.S., B.Eng., etc.)
0.583481153
I never completed any formal education
0.003991131
Master’s degree (M.A., M.S., M.Eng., MBA, etc.)
0.190798226
Other doctoral degree (Ph.D., Ed.D., etc.)
0.027716186
Primary/elementary school
0.003215078
Professional degree (JD, MD, etc.)
0.004212860
Secondary school (e.g. American high school, German Realschule or Gymnasium, etc.)
0.023946785
Some college/university study without earning a degree
0.116075388
names <- c("GA", "L", "NCE", "M", "OD", "EP", "TP", "ES", "ST")
tableLC <- table(DF_LA$EdLevel)
tableLC <- prop.table(tableLC)
tableLC
Associate degree (A.A., A.S., etc.)
0.049574547
Bachelor’s degree (B.A., B.S., B.Eng., etc.)
0.497965224
I never completed any formal education
0.005549390
Master’s degree (M.A., M.S., M.Eng., MBA, etc.)
0.102108768
Other doctoral degree (Ph.D., Ed.D., etc.)
0.006659267
Primary/elementary school
0.002959674
Professional degree (JD, MD, etc.)
0.056233814
Secondary school (e.g. American high school, German Realschule or Gymnasium, etc.)
0.049204587
Some college/university study without earning a degree
0.229744728
layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(6, 2))
par(mai=rep(0.8, 4))
barplot(tableUSA, las=2, names.arg=names, main='Grados educativos en Estados Unidos', xlab = "Grados educativos", ylab = "Frecuencia relativa", col=c("skyblue","orange","red","beige","aliceblue","black","azure", "burlywood3", "cornflowerblue"),xlim=c(0,10), ylim = c(0, 0.6), cex.names=0.8)
barplot(tableLC, las=2, names.arg=names, main='Grados educativos en América Latina', xlab = "Grados educativos", ylab = "Frecuencia relativa", col=c("skyblue","orange","red","beige","aliceblue","black","azure", "burlywood3", "cornflowerblue"),xlim=c(0,10), ylim = c(0, 0.6), cex.names=0.8)
par(mai=c(0,0,0,0))
plot.new()
legend(x="center", ncol=2, legend = c("Grado Asociado","Licenciatura", "Nunca Completé ninguna Educación formal", "Maestría", "Otro Doctorado", "Escuela Primaria", "Título Profesional", "Escuela Secundaria", "Estudios Superiores sin obtener un Título"), fill=c("skyblue","orange","red","beige","aliceblue","black","azure", "burlywood3", "cornflowerblue"))
Los gráficos de barras muestran que la mayoría de los programadores tanto estadounidenses como latinoamericanos tienen licenciatura, si se compara, existe una mayor frecuencia relativa de programadores con licenciatura en Estados Unidos que en América Latina.
Por otro lado, en América Latina existe una mayor frecuencia relativa de programadores que no terminaron sus estudios universitarios en comparación con Estados Unidos.
Por último, podemos comprobar con la moda que el grado más común en ambas regiones es el de licenciatura.
mlv(DF_USA$EdLevel)
[1] "Bachelor’s degree (B.A., B.S., B.Eng., etc.)"
mlv(DF_LA$EdLevel)
[1] "Bachelor’s degree (B.A., B.S., B.Eng., etc.)"
tableEmpleoUSA <- table(DF_USA$Employment)
tableEmpleoUSA <- prop.table(tableEmpleoUSA)
tableEmpleoUSA
Employed full-time
0.887500000
Employed part-time
0.012817797
Independent contractor, freelancer, or self-employed
0.063771186
Not employed, and not looking for work
0.001694915
Not employed, but looking for work
0.019703390
Retired
0.002330508
Student
0.012182203
namesEmpleo <- c("TC", "TP", "IA", "SEBT", "SEST", "R", "E")
tableEmpleoLC <- table(DF_LA$Employment)
tableEmpleoLC <- prop.table(tableEmpleoLC)
tableEmpleoLC
Employed full-time
0.795424403
Employed part-time
0.042108753
Independent contractor, freelancer, or self-employed
0.117705570
Not employed, and not looking for work
0.001657825
Not employed, but looking for work
0.029177719
Retired
0.000331565
Student
0.013594164
layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(8, 2))
par(mai=rep(0.8, 4))
barplot(tableEmpleoUSA, las=1, names.arg=namesEmpleo, main='Empleos en Estados Unidos', xlab = "Tipo de empleo", ylab = "Frecuencia relativa", col=c("skyblue","orange","red","beige","aliceblue","black","blue"),xlim=c(0,8), ylim = c(0, 1), cex.names=0.8, las=2)
barplot(tableEmpleoLC, las=1, names.arg=namesEmpleo, main='Empleos en América Latina', xlab = "Tipo de empleo", ylab = "Frecuencia relativa", col=c("skyblue","orange","red","beige","aliceblue","black","blue"),xlim=c(0,8), ylim = c(0, 1),cex.names=0.8, las=2)
par(mai=c(0,0,0,0))
plot.new()
legend(x="center", ncol=3, legend = c("Tiempo Completo","Tiempo Parcial", "Independiente, Autónomo", "Sin Empleo, Buscando Trabajo", "Sin Empleo, Sin buscar Trabajo", "Retirado", "Estudiante"), fill=c("skyblue","orange","red","beige","aliceblue","black","blue"))
Los gráficos de barras muestran que la mayoría de los programadores tanto estadounidenses como latinoamericanos trabajan a tiempo completo, existe una mayor frecuencia relativa de programadores trabajando a tiempo completo en Estados Unidos que en América Latina.
También se puede observar que existe mayor frecuencia relativa de latinoamericanos trabajando a medio tiempo y de manera independiente que los estadounidenses.
variables1 <- c("MS", "AS", "NSN", "AI", "MI")
temp = DF_USA$JobSat[!is.na(DF_USA$JobSat)]
satis_vector_USA <- vector()
satis_vector_LC <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
satis_vector_USA <- c(satis_vector_USA, sub_pal)
}
}
temp = DF_LA$JobSat[!is.na(DF_LA$JobSat)]
satis_vector <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
satis_vector_LC <- c(satis_vector_LC, sub_pal)
}
}
layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(7, 1))
par(mai=rep(0.8, 4))
barplot(table(satis_vector_USA)/sum(table(satis_vector_USA)), main = "Estados Unidos", names.arg = variables1, col = c("blue","orange","yellow", "green", "red"), ylab ="Frecuencias Relativas", xlab = "Grado de satisfacción")
barplot(table(satis_vector_LC)/sum(table(satis_vector_LC)), names.arg = variables1 , main = "América Latina", col = c("blue","orange","yellow", "green", "red"), ylab ="Frecuencias Relativas", xlab = "Grado de satisfacción", ylim = c(0, 0.4))
par(mai=c(0,0,0,0))
plot.new()
legend(x="center", ncol=2,legend=c("Muy Satisfecho","Algo Satisfecho","Ni Satisfecho Ni insatisfecho", "Algo Insatisfecho", "Muy Insatisfecho"), fill=c("blue","orange","yellow", "green", "red"))
En la gráfica podemos ver que América Latina tiene un nivel de satisfacción mayor con su trabajo que Estado Unidos. Así mismo, en Estados Unidos el 48.18% de los encuestados están insatisfechos con su empleo. Además, la mayoría de los programadores en América Latina se encuentra ni satisfechos ni insatisfechos con su empleo.
empleados_LC <- table(DF_LA$OrgSize)
empleados_LC <- empleados_LC[c(9, 5, 2, 6, 4, 8, 1, 7, 3)]
empleados_USA <- table(DF_USA$OrgSize)
empleados_USA <- empleados_USA[c(9, 5, 2, 6, 4, 8, 1, 7, 3)]
legend_text <- c("1000 a 4999 empleados","10 a 19 eempleados", "10000 o más empleados", "100 a 499 empleados", "2 a 9 empleados", "20 a 99 empleados", "5000 a 9999 empleados", "500 a 999 empleados", "Solo yo")
legend_text <- legend_text[c(9, 5, 2, 6, 4, 8, 1, 7, 3)]
color_LC <- c("red", "yellow", "pink", "blue", "green", "orange", "black", "purple", "gray")
variables <- c(" "," "," "," "," "," "," "," "," ")
layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(7, 1))
par(mai=rep(0.8, 4))
barplot(empleados_LC/sum(empleados_LC), names.arg = variables, col = color_LC, ylab ="Frecuencias Relativas", las=2, ylim=c(0,0.4), xlim = c(0, 10), main = "Tamaño de las organizaciones o empresas en América Latina", cex.main=0.8)
barplot(empleados_USA/sum(empleados_USA), names.arg = variables, col = color_LC, ylab ="Frecuencias Relativas", las=2, ylim=c(0,0.4), xlim = c(0, 10), main = "Tamaño de las organizaciones o empresas en Estados Unidos", cex.main=0.8)
par(mai=c(0,0,0,0))
plot.new()
legend(x="center", ncol=3,legend=legend_text, fill=color_LC)
Según las gráficas de barras de Estados Unidos la mayoría de los encuestados labora en un entorno con 10000 o más empleados (frecuencia absoluta de 1915), así mismo en América Latina la mayoría de encuestados labora en un entorno de 20 a 99 empleados.
horas_LC <- table(DF_LA$WorkWeekHrs)
horas_USA <- table(DF_USA$WorkWeekHrs)
mean(DF_LA$WorkWeekHrs, na.rm = TRUE)
[1] 38.33877
mean(DF_USA$WorkWeekHrs, na.rm = TRUE)
[1] 41.57752
color = c("darkblue", "skyblue")
y_LC_median <- mean(DF_LA$WorkWeekHrs, na.rm = TRUE)
y_USA_median <- mean(DF_USA$WorkWeekHrs, na.rm = TRUE)
x_general <- c("Latino América", "Estados Unidos")
y_general <- c(y_LC_median, y_USA_median)
DF_TEMP <-DF_MIX[DF_MIX$Employment == "Employed full-time" & !is.na(DF_MIX$Employment),]
boxplot(DF_TEMP$WorkWeekHrs~DF_TEMP$Region, ylab = "Región", xlab = "Horas", main="Horas trabajadas por semana", notch = FALSE, horizontal = TRUE)
Se consideró solo a los que trabajan a los desarrolladores que trabajan a tiempo completo para que las unidades muestrales ean comparables. Según la gráfica, la media de horas que trabajan los encuestados por semana en América Latina es de 38.38 horas y en Estados Unidos es de 41.57. Sin embargo, si nos fijamos en que las medianas son iguales, esta diferencia no es estadísticamente significativa, por lo que podemos concluir que las horas de trabajo semanales no tienen relación con la región.
sd(DF_USA$WorkWeekHrs, na.rm = TRUE)/mean(DF_USA$WorkWeekHrs, na.rm = TRUE)
[1] 0.1886154
sd(DF_LA$WorkWeekHrs, na.rm = TRUE)/mean(DF_LA$WorkWeekHrs, na.rm = TRUE)
[1] 0.3210952
Gracias a estos gráficos sabemos que en América Latina el 26.05% de empleados trabaja horas extra a menudo (de 1 a más días a la semana) y el 27.71% a veces (1 o 2 dos días al mes). En Estados Unidos, las 2 respuestas más votadas son “A veces” y “Ocasionalmente (1o 2 días por trimestre)”, con 26.35% y 25.71% cada una. También podemos observar que la variable “Nunca” tiene mayor porcentaje en Estados Unidos. Todo esto nos dice claramente que en América Latina los desarrolladores trabajan más horas extra a comparación de Estados Unidos, y esto podría deberse a un mejor entorno laboral.
En general, tanto en América Latina como en Estados Unidos, las empresas tienen un buen proceso de incorporación (no todas), pero es ligeramente mejor en Estados Unidos, lo que implica que en América Latina existen más empresas con un mal proceso de incorporación. Los programadores más jóvenes en su mayoría respondieron a estas preguntas, debido a que suelen incorporarse a esa edad a las empresas o se encargan también de incorporar gente nueva.
En base a estos gráficos podemos ver que la cantidad de programadores que buscan empleo es mayor en América Latina, y la cantidad de programadores que no buscan empleo es mucho mayor en Estados Unidos. Esto puede deberse a que hay mayor disponibilidad de trabajos en Estados Unidos que en América Latina y también que los desarrolladores en Estados Unidos ya tienen estabilidad laboral.
Se destaca que entre los lenguajes más usados tanto en Estados Unidos como en América Latina son JavaScript, HTML/CSS, SQL. Es importante resaltar que en Estados Unidos hay un mayor uso de Python que en América Latina.
#usa
temp = DF_USA$NEWLearn[!is.na(DF_USA$NEWLearn)]
tabla_NEWLearn_USA = table(temp)
tabla_NEWLearn_USA = prop.table(tabla_NEWLearn_USA)
tabla_NEWLearn_USA
temp
Every few months Once a decade Once a year
0.30196258 0.01721565 0.40502697
Once every few years
0.27579479
tiemponames <- c("Pocos meses", "Una por década", "Una vez al año", "Pocos años")
par(mfrow=c(1, 2))
barplot(tabla_NEWLearn_USA, names.arg=tiemponames, xlab = 'Tiempo', ylab = 'Frecuencias Relativas', main="Tiempo de aprendizaje", col=c("skyblue","orange","red","beige"), ylim = c(0,0.5), cex.names = 0.4, las =1)
#LC
temp2 = DF_LA$NEWLearn[!is.na(DF_LA$NEWLearn)]
tabla_NEWLearn_LC = table(temp2)
tabla_NEWLearn_LC = prop.table(tabla_NEWLearn_LC)
tabla_NEWLearn_LC
temp2
Every few months Once a decade Once a year
0.450056540 0.009800226 0.362231436
Once every few years
0.177911798
barplot(tabla_NEWLearn_LC, names.arg=tiemponames, xlab = 'Tiempo', ylab = 'Frecuencias Relativas', main="Tiempo de aprendizaje", col=c("skyblue","orange","red","beige"), ylim = c(0,0.5), cex.names = 0.4, las =1)
Se observa que en US la mayoría de los programadores aprenden un nuevo lenguaje cada año, seguido de pocos meses, mientras que en LC la mayoría aprenden un nuevo lenguaje cada poco mes, seguido de un año.
temp = DF_USA$PlatformWorkedWith[!is.na(DF_USA$PlatformWorkedWith)]
PWW_vec_USA <- vector() #PWW(PlataformWorkedWith)
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
PWW_vec_USA <- c(PWW_vec_USA, sub_pal)
}
}
temp = DF_LA$PlatformWorkedWith[!is.na(DF_LA$PlatformWorkedWith)]
PWW_vec_LC <- vector()
for (pal in temp) {
for (sub_pal in strsplit(pal, ";")) {
PWW_vec_LC <- c(PWW_vec_LC, sub_pal)
}
}
#USA
tabla_PWW_USA_F <- table(PWW_vec_USA)
tabla_PWW_USA_FR <- prop.table(tabla_PWW_USA_F)
tabla_PWW_USA_o <- data.frame(names(tabla_PWW_USA_F), as.vector(tabla_PWW_USA_F), as.vector(tabla_PWW_USA_FR))
names(tabla_PWW_USA_o) <- c('PlataformasSO','Frecuencia', 'Frencuencia Relativa')
tabla_PWW_USA_o
tabla_PWW_USA_or <- tabla_PWW_USA_o[order(tabla_PWW_USA_o$`Frencuencia Relativa`,decreasing = TRUE), ]
barplot(tabla_PWW_USA_or$`Frencuencia Relativa`, names.arg = tabla_PWW_USA_or$PlataformasSO, main = "Estados Unidos", ylab = 'Frecuencias relativas', las=2, font.lab = 4, cex.names = 0.39)
#LC
tabla_PWW_LC_F <- table(PWW_vec_LC)
tabla_PWW_LC_FR <- prop.table(tabla_PWW_LC_F)
tabla_PWW_LC_o <- data.frame(names(tabla_PWW_LC_F), as.vector(tabla_PWW_LC_F), as.vector(tabla_PWW_LC_FR))
names(tabla_PWW_LC_o) <- c('PlataformasSO','Frecuencia', 'Frencuencia Relativa')
tabla_PWW_LC_o
tabla_PWW_LC_or <- tabla_PWW_LC_o[order(tabla_PWW_LC_o$`Frencuencia Relativa`,decreasing = TRUE), ]
barplot(tabla_PWW_LC_or$`Frencuencia Relativa`, names.arg = tabla_PWW_LC_or$PlataformasSO, ylab = 'Frecuencias relativas', las=2, font.lab = 4, main = "América Latina", cex.names = 0.39)
Se observa que en tanto en Estados Unidos como en Latinoamérica la plataforma más usada es Linux, seguido de Windows, no obstante, en general, hay un uso distribuido en cuanto la plataforma en los distintos sistemas operativos.